Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In many cases, software applications are designed to interact with other software applications or other computer systems. Some software applications may be designed to perform these or other tasks in parallel. Computer systems that process such applications typically include processors with multiple cores and/or multiple hardware threads. Each of the cores or threads is capable of processing tasks independent of and simultaneously with other cores or threads. In some cases, parallel processing systems may incorporate many processors with a large number of processing cores or threads. In such cases, resources managers are typically used to allocate processing time among these processing resources.